% Ejercicio "SQL"
\subsection*{\fbox{\theejercicio} - SQL}

Se desea construir un analizador sint\'actico para un subconjunto del lenguaje de SQL. En concreto, se desea construir un analizador para las sentencias de inserci\'on {\tt (INSERT)}, borrado {\tt (DELETE)} y consulta {\tt (SELECT)} a la base de datos, cuya sintaxis viene dada por los diagramas de Conway adjuntos. Para simplificar, se supone que todos los campos solo toman valores num\'ericos. Por ejemplo, son v\'alidas en este lenguaje las sentencias:

\begin{verbatim}
INSERT INTO ALUMNOS (DNI, CURSO, COD ) VALUES (1,4,2);
INSERT INTO NOTAS (PL1,PL2) VALUES (6,4);
DELETE FROM ALUMNOS;
DELETE FROM NOTAS WHERE PL1 = 0 AND PL2 = 0;
SELECT DNI, NOTA1, NOTA2 FROM NOTAS,ALUMNOS
     WHERE NOTA1 = 0;
SELECT NOTA1, NOTA2 FROM NOTAS
     WHERE DNI IN ( SELECT DNI FROM ALUMNOS
                         WHERE VAL=5 );
\end{verbatim}

\begin{enumerate}[1)]
\item Definir los tokens y hallar una gram\'atica LL(1) para las sentencias {\tt INSERT}, {\tt DELETE} y {\tt SELECT}.
\item Construir las tablas de an\'alisis LL(1) para este subconjunto del lenguaje SQL.
\item Escribir en C todos los procedimientos necesarios para implementar el reconocedor sint\'actico de la sentencia {\tt SELECT}.
\end{enumerate}

\begin{itemize}
\item {\em Sent. SQL}:
\begin{center}
\includegraphics[0cm,0cm][7.01cm,4.13cm]{./capitulo3/ejercicios/figuras/sentencia_sql.jpg}
\end{center}
\item {\em Sent. Insert}:
\begin{center}
\includegraphics[0cm,0cm][12.04cm,4.13cm]{./capitulo3/ejercicios/figuras/sentencia_insert.jpg}
\end{center}
\item {\em Sent. Delete}:
\begin{center}
\includegraphics[0cm,0cm][12.22cm,4.34cm]{./capitulo3/ejercicios/figuras/sentencia_delete.jpg}
\end{center}
\item {\em Sent. Select}:
\begin{center}
\includegraphics[0cm,0cm][12.06cm,2.46cm]{./capitulo3/ejercicios/figuras/sentencia_select.jpg}
\end{center}

\end{itemize}

% Solución del ejercicio
\subsubsection*{SOLUCI\'ON}


